// POJ-1363 Rails
// 陈锋
#include <stack>
#include <iostream>

using namespace std;
const int MAXN = 1000 + 4;
int N, B[MAXN];
int main() {
  ios::sync_with_stdio(false), cin.tie(0);
  while (cin >> N && N) {
    while (cin >> B[1] && B[1]) {
      for(int i = 2; i <= N; i++) cin >> B[i];
      stack<int> s;
      int ai = 1, bi = 1;
      while (bi <= N) {
        if (ai == B[bi]) ai++, bi++; // 从A->C->B，不用入栈了
        else if (!s.empty() && s.top() == B[bi]) ++bi, s.pop(); // 栈顶的开过去就是了
        else if (ai <= N) s.push(ai++); // 只能先入栈试试看了
        else break; // 无计可施了
      }
      cout << ((bi == N + 1) ? "Yes" : "No") << endl;
    }
    cout << endl;
  }
  return 0;
}
/*
算法分析请参考: 《入门经典-第2版》例题6-2
注意在获取栈顶元素之前要判断栈是否为空
*/
// Accepted 297ms 668kB 835 G++ 2020-12-13 17:10:38 22207538